package com.singleton;

/**
 * @Author: LiQingBo
 * @Date: 2021/6/20-06-20-0:31
 * @Description: com.singleton
 * @version: 1.0
 * java创始人之一Joshua Bloch 写的一本书《Effective Java》中推荐方法
 * 枚举单例
 * 不仅可以解决线程同步，还可以防止反序列化
 * 因为枚举类没有构造方法，所以即使拿到class文件也没办法构造他的对象，他的返序列化，只是返回了一个例如INSTANCE的值.
 * 如果根据这个值来查上一个对象，那么他返回的是和单例创建的同一个对象
 * 为什么防止序列化？
 * java的反射是可以通过一个class文件，然后把class漏到内存，然后new一个实例化出来
 */
public enum Mgr08 {
    INSTANCE;
    public void m(){}

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            new Thread(()->{
                System.out.println(Mgr08.INSTANCE.hashCode());
            }).start();
        }
    }
}
